﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using Biblioteca.Utils;
using SERIX.Util;


namespace SERIX
{
    public partial class ComunidadesManut : Seguranca
    {
        string _operacao;
        string _idt_com;
        string _idt_mun = "";
        string _filtro = "";

        private void lovSelecao(string chave, string descricao)
        {
            tbIDT_MUN.Text = descricao;
            tbIDT_MUN.Attributes.Add("chave", chave);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            base.OnLoad(e);
            lovGenerica1.Selecao += new SERIX.Controles.lovGenerica.SelecaoDelegate(lovSelecao);
            lovGenerica1.ConfigurarLov("Serix", "srx_municipios", "IDT_MUN", "NOME_MUN", "NOME_MUN", "Pesquisa de Municípios", "Nome"); 
            
            _operacao = Request["OP"];
            if (!String.IsNullOrEmpty(Request["idt_com"]))
            {
                _idt_com = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_com"]));
            }
            if (!String.IsNullOrEmpty(Request["idt_mun"]))
            {
                _idt_mun = Server.UrlDecode(Criptografia.Descriptografar(Request["idt_mun"]));
                _filtro = "?idt_mun=" + Server.UrlEncode(Request["idt_mun"]);
            }
            if (!Page.IsPostBack)
            {
                if (Session["SeExiste"] != null)
                {
                    lblErro.Visible = true;
                    lblErro.Text = "Já existe uma comunidade de nome "+ Session["SeExiste"].ToString()+ ".";
                    Session.Remove("SeExiste");
                }
                ViewState["DataTable"] = CComunidades.ObterDescricoes(UsuAut.Login);
                BiblioSERIX.PreencherDdl(ref ddlIDT_TPO_COM, CTiposComunidades.ObterTodos(UsuAut.Login), "DSC_TPO_COM", "IDT_TPO_COM");
                switch (_operacao)
                {
                    case "R":
                        {
                            lblTitulo.Text = "Cadastro de comunidade";
                            Cancelar_Button.Visible = false;
                            CComunidades comunidades = CComunidades.PesquisaporCodigo(_idt_com, UsuAut.Login);
                            CMunicipios municipio = CMunicipios.PesquisaporCodigo(comunidades.Idt_mun, UsuAut.Login);
                            tbIDT_MUN.Text = municipio.Nome_mun;
                            tbIDT_MUN.Attributes.Add("chave", comunidades.Idt_mun);
                            ddlIDT_TPO_COM.SelectedValue = comunidades.Idt_tpo_com;
                            tbPOPULACAO.Text = comunidades.Populacao;
                            tbNOME_COM.Text = comunidades.Nome_com;
                            DesabilitaControles();
                            break;
                        }
                    case "U":
                        {
                            lblTitulo.Text = "Cadastro de comunidade";
                            CComunidades comunidades = CComunidades.PesquisaporCodigo(_idt_com, UsuAut.Login);
                            CMunicipios municipio = CMunicipios.PesquisaporCodigo(comunidades.Idt_mun, UsuAut.Login);
                            tbIDT_MUN.Text = municipio.Nome_mun;
                            tbIDT_MUN.Attributes.Add("chave", comunidades.Idt_mun);
                            ddlIDT_TPO_COM.SelectedValue = comunidades.Idt_tpo_com;
                            tbPOPULACAO.Text = comunidades.Populacao;
                            tbNOME_COM.Text = comunidades.Nome_com;
                            break;

                        }
                    case "I":
                        {
                            if (!string.IsNullOrEmpty(_idt_mun))
                            {
                                //((Button)lovGenerica1.FindControl("btnLov")).Enabled = false;
                                CMunicipios municipio = CMunicipios.PesquisaporCodigo(_idt_mun, UsuAut.Login);
                                tbIDT_MUN.Text = municipio.Nome_mun;
                                tbIDT_MUN.Attributes.Add("chave", _idt_mun);
                                ddlIDT_TPO_COM.Focus();
                            }
                            else
                            {
                                lovGenerica1.Focus();
                            }
                            lblTitulo.Text = "Cadastro de comunidade";
                            break;
                        }
                    case "D":
                        {
                            lblTitulo.Text = "Exclusão de Comunidade";
                            CComunidades comunidades = CComunidades.PesquisaporCodigo(_idt_com, UsuAut.Login);
                            CMunicipios municipio = CMunicipios.PesquisaporCodigo(comunidades.Idt_mun, UsuAut.Login);
                            tbIDT_MUN.Text = municipio.Nome_mun;
                            tbIDT_MUN.Attributes.Add("chave", comunidades.Idt_mun);
                            ddlIDT_TPO_COM.SelectedValue = comunidades.Idt_tpo_com;
                            tbPOPULACAO.Text = comunidades.Populacao;
                            tbNOME_COM.Text = comunidades.Nome_com;
                            DesabilitaControles();
                            break;
                        }
                    default: break;
                }
            }
        }

        protected void DesabilitaControles()
        {
            ((Button)lovGenerica1.FindControl("btnLov")).Enabled = false;
            BiblioSERIX.DesabilitaControle(tbIDT_MUN);
            BiblioSERIX.DesabilitaControle(ddlIDT_TPO_COM);
            BiblioSERIX.DesabilitaControle(tbPOPULACAO);
            BiblioSERIX.DesabilitaControle(tbNOME_COM);
        }

        protected void Ok_Button_Click(object sender, EventArgs e)
        {
            try
            {

                CComunidades comunidades;
                if (String.IsNullOrEmpty(_idt_com) && _operacao[0].Equals('I'))
                {
                    _idt_com = CComunidades.ObterNovoIdt(UsuAut.Login).ToString();
                }
                comunidades = new CComunidades(_idt_com, tbIDT_MUN.Attributes["chave"], ddlIDT_TPO_COM.SelectedValue, tbPOPULACAO.Text, Biblio.TirarAcentos(tbNOME_COM.Text.ToUpper()));
                switch (_operacao)
                {
                    case "I":
                        {
                            //Verifica se nome que pretende ser inserido já não existe no banco
                            int fim = ((DataTable)ViewState["DataTable"]).Rows.Count;
                            for (int i = 0; i < fim; i++)
                            {
                                if (Biblio.TirarAcentos(tbNOME_COM.Text).ToUpper() == Biblio.TirarAcentos(((DataTable)ViewState["DataTable"]).Rows[i].ItemArray[0].ToString().ToUpper()))
                                {
                                    Session["SeExiste"] = tbNOME_COM.Text;
                                    Response.Redirect(Request.RawUrl);
                                }

                            }
                            comunidades.Inserir(UsuAut.Login);
                            break;
                        }
                    case "U":
                        {
                            comunidades.Alterar(UsuAut.Login);
                            break;
                        }
                    case "D":
                        {
                            comunidades.Excluir(UsuAut.Login);
                            break;
                        }
                    default: break;
                        
                }
                Response.Redirect("Comunidades.aspx" + _filtro);
                
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
            
        }

        protected void Cancelar_Button_Click(object sender, EventArgs e)
        {
            Response.Redirect("Comunidades.aspx" + _filtro);
        }

       

        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {

                CComunidades comunidades;
                if (String.IsNullOrEmpty(_idt_com) && _operacao[0].Equals('I'))
                {
                    _idt_com = CComunidades.ObterNovoIdt(UsuAut.Login).ToString();
                }
                comunidades = new CComunidades(_idt_com, tbIDT_MUN.Attributes["chave"], ddlIDT_TPO_COM.SelectedValue, tbPOPULACAO.Text, tbNOME_COM.Text);
                switch (_operacao)
                {
                    case "I":
                        {
                            comunidades.Inserir(UsuAut.Login);
                            break;
                        }
                    case "U":
                        {
                            comunidades.Alterar(UsuAut.Login);
                            break;
                        }
                    case "D":
                        {
                            comunidades.Excluir(UsuAut.Login);
                            break;
                        }
                    default: break;
                       
                }
                tbNOME_COM.Text = "";
                tbPOPULACAO.Text = "";
                ddlIDT_TPO_COM.SelectedIndex = 0;
                _idt_com = null;
                lblErro.Text = "Inserido com sucesso, pode cadastrar a próxima comunidade";
                lblErro.Visible = true;
            }
            catch (Exception ex)
            {
                lblErro.Text = "*Erro: " + ex.Message;
                lblErro.Visible = true;
            }
            
            
        }

        protected void tbIDT_MUN_PreRender(object sender, EventArgs e)
        {
            if (tbIDT_MUN.Text != "")
            {
                CMunicipios mun = CMunicipios.PesquisaporCodigo(tbIDT_MUN.Attributes["chave"], UsuAut.Login);
                BiblioSERIX.PreencherDdl(ref ddlTerrCid, CTerritorios.ObterTodos(UsuAut.Login, "_CID"), "DSC_TER", "IDT_TER");
                ddlTerrCid.SelectedValue = mun.Terri_cid;
                BiblioSERIX.PreencherDdl(ref ddlTerrPlan, CTerritorios.ObterTodos(UsuAut.Login, ""), "DSC_TER", "IDT_TER");
                ddlTerrPlan.SelectedValue = mun.Terri_plan;
                BiblioSERIX.PreencherDdl(ref ddlEsloc, CEscritoriosLocais.ObterTodos(UsuAut.Login), "DSC_ESLOC", "IDT_ESLOC");
                ddlEsloc.SelectedValue = mun.Idt_Esloc;
                BiblioSERIX.PreencherDdl(ref ddlUnidReg, CUnidadesRegionais.ObterTodos(UsuAut.Login), "NOME_UNI_REG", "IDT_UNI_REG");
                ddlUnidReg.SelectedValue = CEscritoriosLocais.PesquisaporCodigo(mun.Idt_Esloc, UsuAut.Login).Idt_uni_reg;
            }
        }


        
    }
}
